#include <QApplication>
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QMessageBox>
#include <QPixmap>

// 新的窗口类，显示路线查询、车次查询以及路线图，并添加标题
class MainAppWindow : public QWidget {
    Q_OBJECT

public:
    MainAppWindow(QWidget *parent = nullptr) : QWidget(parent) {
        // 创建控件
        QLabel *titleLabel = new QLabel("公共路线自动化选择系统", this);  // 添加标题
        titleLabel->setAlignment(Qt::AlignCenter);  // 让标题居中显示
        titleLabel->setStyleSheet("font-size: 24px; font-weight: bold;");  // 设置标题的字体大小

        QPushButton *routeQueryButton = new QPushButton("路线查询", this);
        routeQueryButton->setStyleSheet("font-size: 24px;");  // 设置按钮字体大小

        QPushButton *trainQueryButton = new QPushButton("车次查询", this);
        trainQueryButton->setStyleSheet("font-size: 24px;");  // 设置按钮字体大小

        QLabel *routeMapLabel = new QLabel(this);

        // 设置示例路线图（可以替换为实际的图片路径）
        QPixmap routeMap("C:\\Users\\Lenovo\\Desktop\\Bussystem\\BabyBus.png"); // 请替换为实际的图片路径
        routeMapLabel->setPixmap(routeMap);
        routeMapLabel->setScaledContents(true); // 缩放图片以适应标签大小

        // 创建布局
        QVBoxLayout *mainLayout = new QVBoxLayout(this);  // 主布局为垂直布局
        mainLayout->addWidget(titleLabel);  // 将标题添加到主布局的顶部

        // 创建按钮和路线图的布局
        QVBoxLayout *buttonLayout = new QVBoxLayout();
        buttonLayout->addWidget(routeQueryButton);
        buttonLayout->addWidget(trainQueryButton);

        QHBoxLayout *contentLayout = new QHBoxLayout();  // 水平布局，放置按钮和路线图
        contentLayout->addLayout(buttonLayout); // 左边放按钮
        contentLayout->addWidget(routeMapLabel); // 右边放路线图

        mainLayout->addLayout(contentLayout);  // 将按钮和路线图的布局添加到主布局

        // 设置窗口标题
        setWindowTitle("Main Application");
        resize(600, 400);
    }
};

// 登录窗口类
class LoginWindow : public QWidget {
    Q_OBJECT

public:
    LoginWindow(QWidget *parent = nullptr) : QWidget(parent) {
        // 创建标题
        QLabel *titleLabel = new QLabel("公交车查询系统", this);  // 添加标题
        titleLabel->setAlignment(Qt::AlignCenter);  // 标题居中显示
        titleLabel->setStyleSheet("font-size: 24px; font-weight: bold;");  // 设置标题字体大小

        // 创建控件
        QLabel *usernameLabel = new QLabel("Username:", this);
        QLineEdit *usernameLineEdit = new QLineEdit(this);

        QLabel *passwordLabel = new QLabel("Password:", this);
        QLineEdit *passwordLineEdit = new QLineEdit(this);
        passwordLineEdit->setEchoMode(QLineEdit::Password);

        QPushButton *loginButton = new QPushButton("Login", this);
        loginButton->setStyleSheet("font-size: 16px;");  // 设置登录按钮的字体大小

        // 设置布局
        QVBoxLayout *layout = new QVBoxLayout(this);
        layout->addWidget(titleLabel);  // 添加标题到布局的顶部
        layout->addWidget(usernameLabel);
        layout->addWidget(usernameLineEdit);
        layout->addWidget(passwordLabel);
        layout->addWidget(passwordLineEdit);
        layout->addWidget(loginButton);

        // 连接登录按钮点击信号到槽函数
        connect(loginButton, &QPushButton::clicked, this, [=]() {
            QString username = usernameLineEdit->text();
            QString password = passwordLineEdit->text();

            if (username == "a" && password == "123") {
                QMessageBox::information(this, "Login Successful", "Welcome, admin!");

                // 登录成功后，打开新的窗口
                MainAppWindow *mainAppWindow = new MainAppWindow();
                mainAppWindow->show();
                this->close(); // 关闭登录窗口
            } else {
                QMessageBox::warning(this, "Login Failed", "Invalid username or password.");
            }
        });

        // 设置窗口标题
        setWindowTitle("Login");
        resize(300, 200);  // 调整窗口大小以适应标题
    }
};

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    LoginWindow window;
    window.show();

    return app.exec();
}

#include "main.moc"
